﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<stdlib.h>
using namespace std;

//class Date
//{
//public:
//	void Init()
//	{
//		_year = 1;
//		_month = 1;
//		_day = 1;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};

//typedef int DataType;
////class Stack
////{
////public:
////	void Init()
////	{
//////给_a申请空间等操作
////	}
////	void Destory()
////	{
////		// 释放资源
////		free(_a);
////		_a = NULL;
////		_top = 0;
////		_capacity = 0;
////	}
////private:
////	DataType* _a;
////	int _top;
////	int _capacity;
////};
//
//class Stack
//{
//public:
//	~Stack()
//	{
//		cout << "~Stack" << endl;
//		free(_a);
//		_a = NULL;
//		_top = 0;
//		_capacity = 0;
//	}
//private:
//	DataType* _a;
//	int _top;
//	int _capacity;
//};
//
//int main()
//{
//	Stack st;
//	return 0;
//}

//class Date
//{
//public:
//	Date()// 1.⽆参构造函数 
//	{
//		_year = 1;
//		_month = 1;
//		_day = 1;
//	}
//	// 2.带参构造函数 
//	Date(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	// 3.全缺省构造函数 
//	/*Date(int year = 1, int month = 1, int day = 1)
//	{
//	_year = year;
//	_month = month;
//	_day = day;
//	}*/
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//// 注意：如果通过⽆参构造函数创建对象时，对象后⾯不⽤跟括号 
//// 否则编译器⽆法区分这⾥是函数声明还是实例化对象 
//// 无论定义在全局还是局部(比如main函数中)都无法区分
//Date d3(); // 函数声明
//Date d4;  // 全局变量
//int main()
//{
//	// 如果留下三个构造中的第⼆个带参构造，第⼀个和第三个注释掉 
//	// 编译报错：error:“Date”: 没有合适的默认构造函数可⽤ 
//	Date d1; // 调⽤默认构造函数 
//
//	Date d2(2025, 1, 1); // 调⽤带参的构造函数 
//	return 0;
//}

// 两个栈实现队列 
//class MyQueue
//{
//public:
////编译器默认⽣成MyQueue的析构函数会调⽤Stack的析构，
////释放的Stack内部的资源 
////
////对于自定义类型
////即使显⽰写析构，也会⾃动调⽤Stack的析构 
// /*~MyQueue()
// {}*/
//
//private:
//	Stack pushst;
//	Stack popst;
//};

//class Date
//{
//public:
//	//Date(int year,int month,int day)
//	//{
//	//	_year = year;
//	//	_month = month;
//	//	_day = day;
//	//}
//	// 拷贝构造
//	Date(Date& d)
//	{
//		_year = d._year;
//		_month = d._month;
//		_day = d._day;
//
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Date d1(2025, 2, 3);
//	// 拷贝构造使用
//	Date d2(d1);
//	Date d3 = d1;//这也是拷贝构造
//
//	Date d4;
//	return 0;
//}

//int main()
//{
//	cout << "   *   " << endl;
//	cout << "  ***  " << endl;
//	cout << " ***** " << endl;
//	cout << "*******" << endl;
//	cout << " ***** " << endl;
//	cout << "  ***  " << endl;
//	cout << "   *   " << endl;
//	return 0;
//}

//class Date
//{
//public:
//	Date(int year = 1, int month = 1, int day = 1)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	int _year;
//	int _month;
//	int _day;
//};
//bool operator==(const Date& d1, const Date& d2)
//{
//	return d1._year == d2._year 
//		&& d1._month == d2._month 
//		&& d1._day == d2._day;
//}
//
//int main()
//{
//	Date d1(2025, 1, 1);
//	Date d2(2025, 2, 1);
//	//显示调用
//	operator==(d1, d2);
//	//隐式调用
//	d1 == d2;
//	return 0;
//}

//class Date
//{
//public:
//	Date(int year = 1, int month = 1, int day = 1)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	// 重载成成员函数
//	bool operator==(const Date& d)
//	{
//		return _year == d._year 
//			&& _month == d._month 
//			&& _day == d._day;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Date d1(2025, 1, 1);
//	Date d2(2025, 2, 1);
//	//显示调用
//	d1.operator==(d2);
//	// 或者
//	d2.operator==(d1);
//	//隐式调用
//	d1 == d2;
//	return 0;
//}

//class Date
//{
//public:
//	Date(int year = 1, int month = 1, int day = 1)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	// 重载成成员函数
//	bool operator>(const Date& d)
//	{
//		if (_year > d._year)
//		{
//			return true;
//		}
//		else if(_year == d._year)
//		{
//			if (_month > d._month)
//			{
//				return true;
//			}
//			else if (_month == d._month)
//			{
//				if (_day > d._day)
//				{
//					return true;
//				}
//				else
//				{
//					return false;
//				}
//			}
//			else
//			{
//				return false;
//			}
//		}
//		else
//		{
//			return false;
//		}
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Date d1(2025, 1, 1);
//	Date d2(2025, 2, 1);
//	if (d1 > d2) // 调的d1的
//		cout << "d1.operator>(d2)" << endl;
//	if (d2 > d1) // 调的d2的
//		cout << "d2.operator>(d1)" << endl;
//	return 0;
//}


//int main()
//{
//	Date d1(2025, 1, 1);
//
//	Date d2(d1);
//	Date d3 = d1;
//	
//	Date d4;
//	d4 = d1;
//	return 0;
//}


